Java ArrayList转为数组 您所在的位置:网站首页 java list 转换 Java ArrayList转为数组

Java ArrayList转为数组

2023-04-04 13:52| 来源: 网络整理| 查看: 265

有时需要在java程序中将ArrayList转换为数组。在本小节中将学习几个java中将 ArrayList转换为数组的方法。

Java中的ArrayList由数组支持。所以毫无疑问,ArrayList提供了将ArrayList转换为数组的实用程序方法。让我们看一个简单的程序,演示如何将ArrayList转换为java中的数组。

import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ArrayListToArray { public static void main(String[] args) { List strList = new ArrayList(); strList.add("1"); strList.add("2"); strList.add("3"); String[] strArr = null; strArr = strList.toArray(new String[strList.size()]); System.out.println(Arrays.toString(strArr)); } }

如果研究ArrayList方法,则发现它重载了toArray方法。另一个是没有任何返回Object数组的参数。但是,不推荐使用它,因为它必须将对象强制转换为适合任何操作的类型。

ArrayList转为数组 - 其他方式

在将数组作为参数传递给toArray方法时,不需要为数组提供精确的大小。下面的代码工作正常。

strArr = strList.toArray(new String[0]); System.out.println(Arrays.toString(strArr));

如果使用的是Java 8或更高版本,则也可以使用Stream将ArrayList转换为数组。

strArr = strList.stream().toArray(String[]::new); System.out.println(Arrays.toString(strArr));

ArrayList转为数组 - 浅拷贝当使用上述方法将ArrayList转换为数组时,它会返回列表中元素的浅表副本。因此,ArrayList或Array中的任何更改也将反映在其他更改中。下面是一个显示此行为的简单程序。

import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ArrayListToArrayMutableObjects { public static void main(String[] args) { Person p1 = new Person("Maxsu"); Person p2 = new Person("Lisa"); List pList = new ArrayList(); pList.add(p1); pList.add(p2); Person[] pArray = pList.toArray(new Person[0]); System.out.println("Original List = "+pList); System.out.println("Created Array from ArrayList = "+Arrays.toString(pArray)); //let's change the list and array pList.get(0).setName("David"); pArray[1].setName("Ram"); System.out.println("Modified List = "+pList); System.out.println("Modified Array = "+Arrays.toString(pArray)); } } class Person { private String name; public Person(String n) { this.name = n; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return this.name; } }

执行上面示例代码,得到以下结果 -

Original List = [Maxsu, Lisa] Created Array from ArrayList = [Maxsu, Lisa] Modified List = [David, Ram] Modified Array = [David, Ram]

如上所见,更改了ArrayList的第一个元素和Array的第二个元素。但是,更改会反映在ArrayList和Array中,最后两者都具有相同的对象。

ArrayList转为数组 - 深拷贝

因此,如果想将ArrayList转换为Array并希望它们被分离,那么将不得不为自己做一个深层复制并编写代码。下面是一个重构代码,显示了如何执行深度复制以将ArrayList转换为Array。

import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ArrayListToArrayDeep { public static void main(String[] args) { Person p1 = new Person("Maxsu"); Person p2 = new Person("Lisa"); List pList = new ArrayList(); pList.add(p1); pList.add(p2); //convert ArrayList to Array using deep copy Person[] pArray = new Person[pList.size()]; for(int i =0; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有